“Tunable variables” (sometimes also referred to as “tunable parameters,” “kernel configurable parameters,” or simply “tunables”) are variables that affect the operation of an entire operating system kernel by setting table sizes and system thresholds, among other things. Tunable parameters also control characteristics of processes, files, and system activity, and thus provide a way in which operating system kernels can be optimized for particular computers or installation or usage circumstances. For example, a “maxusers” tunable parameter may be provided to adjust the size of tables, arrays, buffers, etc. to optimize system performance for the expected number of users on a system. System administrators will be familiar with the tunable parameters that optimize their operating system kernels to various computer systems, installation, and/or usage circumstances. In some instances, kernels are recompiled and relinked for tuning, and to add drivers and subsystems.
Sometimes, it would be useful to have a portion of a kernel use different tunable values for different tasks. For example, a device driver may have tunables that govern its operation. A system administrator may wish to use different values of those tunables for different devices controlled by that driver. Also, a thread scheduler may have tunables that govern scheduling priorities. A system administrator may want to use different values of these tunables for the threads of different users. However, known operating systems do not provide this capability within a standard kernel turning framework.